#include "mainwindow.h"

#include <QDebug>
#include <QGuiApplication>
#include <QScreen>
#include <QRect>


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{

    /* 获取屏幕的分辨率，Qt 官方建议使用这
    11 * 种方法获取屏幕分辨率，防上多屏设备导致对应不上
    12 * 注意，这是获取整个桌面系统的分辨率
    13 */
    QList<QScreen *>list_screen = QGuiApplication::screens();

    /* 如果是 ARM 平台，直接设置大小为屏幕的大小 */
     #if __arm__
         /* 重设大小 */
        this->resize(list_screen.at(0)->geometry().width(),list_screen.at(0)->geometry().height());
        /* 默认是出厂系统的 LED 心跳的触发方式,想要控制 LED，
        * 需要改变 LED 的触发方式，改为 none，即无 */
        system("echo none > /sys/class/leds/sys-led/trigger");
     #else
         /* 否则则设置主窗体大小为 800x480 */
         this->resize(800, 480);
     #endif

    pushButton = new QPushButton(this);

    /* 居中显示 */
     pushButton->setMinimumSize(200, 50);
     pushButton->setGeometry((this->width() - pushButton->width()) /2 ,
         (this->height() - pushButton->height()) /2,
         pushButton->width(),
         pushButton->height()
     );

    file.setFileName("/sys/devices/platform/leds/leds/sys-led/brightness");
    if (!file.exists())
         /* 设置按钮的初始化文本 */
         pushButton->setText("LED device does not exist");

     /* 获取 LED 的状态 */
     getLEDState();

     /* 信号槽连接 */
     connect(pushButton, SIGNAL(clicked()),this, SLOT(pushButtonClicked()));

}

MainWindow::~MainWindow()
{
}

/* 设置 LED 的状态 */
void MainWindow::setLEDState()
{
    /* 在设置 LED 状态时先读取 */
     bool state = getLEDState();

     /* 如果文件不存在，则返回 */
     if (!file.exists()) {
         return;
     }

     if(!file.open(QIODevice::ReadWrite))
            qDebug()<<file.errorString();

     // 蜂鸣器开或关
     QByteArray buf[2] = {"0", "1"};

     if (state)
        file.write(buf[0]);
     else
        file.write(buf[1]);

     file.close();

      /* 更新按钮状态 */
     getLEDState();
}

 /* 获取 LED 的状态 */
bool MainWindow::getLEDState()
{
    /* 如果文件不存在，则返回 */
     if (!file.exists())
         return false;

     if(!file.open(QIODevice::ReadWrite))
         qDebug()<<file.errorString();

     QTextStream in(&file);

     /* 读取文件所有数据 */
     QString buf = in.readLine();

     /* 打印出读出的值 */
     qDebug()<<"buf: "<<buf<<endl;
      file.close();

      if (buf == "1") {
          pushButton->setText("LED 开");
          return true;
      } else {
          pushButton->setText("LED 关");
          return false;
      }
}


void MainWindow::pushButtonClicked()
{
    /* 设置蜂鸣器的状态 */
     setLEDState();
}

